用git checkout切换本地分支从b1到b2时, 如果b1的本地文件有修改, 为什么会发生冲突?

您所在的位置:网站首页 git checkout 卡住 用git checkout切换本地分支从b1到b2时, 如果b1的本地文件有修改, 为什么会发生冲突?

用git checkout切换本地分支从b1到b2时, 如果b1的本地文件有修改, 为什么会发生冲突?

2023-04-01 01:19| 来源: 网络整理| 查看: 265

切换分支的时候,目录里的文件会被替换掉。假如直接替换了,那没track的修改就丢失了。还有其它情况,譬如当前分支的修改用户其实是不需要的,那自动stash再pop或者apply也显得多此一举。所以git在不丢失数据的情况下让用户自己选择,接下来要做什么。如果需要保留修改但不用commit,那就用git stash;如果不需要保留修改,那可以用git checkout -f b2强制切换,也可以用git checkout 或者git reset 把修改回退掉以后再切分支;如果需要做成提交,那就git add + git commit;没有冲突的情况下,修改是可以保留到切分支之后的。

你觉得不合理是因为刚好你的需求是“需要保留修改且不要commit”,但实际上你也可能遇到其它情况。git把选择权交给用户来应对不同的场景,是比较灵活务实的做法。而且如果真要做成你想的那样,git也提供了alias机制可以实现,专为自己定制。如果嫌弃alias不能用checkout这个关键字,还可以自定义一个bash函数封装重写git命令,使得git checkout 这种格式的命令按照你想的那样执行,而其它命令和其它格式的checkout扔按原来的样子执行。岂不是很自由,很灵活!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3